Job recommendation engine using a browsing history

ABSTRACT

A system receives and stores in a database identifications and attributes of jobs viewed by a user in a job posting service, and creates a job browsing history profile for the user using the identifications and attributes. The system compares the job browsing history profile to jobs in the job posting service, generates a listing of jobs based on the comparison, and displays the listing of jobs to the user.

PRIORITY

This patent application claims the benefit of priority to U.S.Provisional Patent Application Ser. No. 61/986,585, filed on Apr. 30,2014, which is incorporated herein by reference in its entirety.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to a system andmethod for recommending jobs to a user of a job posting service, asocial networking service, and/or business networking service, based ona browsing history of the user.

BACKGROUND

Job postings to advertise an available job and solicit applications forthe job are well known. Job postings have been incorporated intonewspapers, periodicals, and the like for many years. More recently,search engines and websites related to facilitating job searching havepresented available jobs electronically. In such circumstances, entitiesadvertising jobs conventionally pay a fee to the owner of the platformon which the advertisement is to be displayed. As a result,advertisements may be displayed generally to most if not all of theusers who access the platform.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings.

FIG. 1 is a block diagram of a system including user devices and asocial network server.

FIG. 2 is a block diagram illustrating various components of a socialnetworking server.

FIG. 3 is a block diagram showing some of the functional components ormodules that comprise a recommendation engine.

FIGS. 4A, 4B, and 4C are example user interfaces that can be displayedby the social network on the user device.

FIGS. 5A, 5B, and 5C are a block diagram illustrating features andoperations of a process and system for recommending job postings to auser.

FIG. 6 is a block diagram illustrating components of a machine able toread instructions from a machine-readable medium.

DETAILED DESCRIPTION

Example methods and systems are directed to recommending jobs to a userbased on a browsing history of the user. Examples merely typify possiblevariations. Unless explicitly stated otherwise, components and functionsare optional and may be combined or subdivided, and operations may varyin sequence or be combined or subdivided. In the following description,for purposes of explanation, numerous specific details are set forth toprovide a thorough understanding of example embodiments. It will beevident to one skilled in the art, however, that the present subjectmatter may be practiced without these specific details.

While broad dissemination of a job posting may be desirable in certaincircumstances, it may be inefficient for a job-posting entity to displayjobs to users who have no interest in a particular job. This lack ofinterest could be because the posted job is not within the user'scurrent area of expertise and experience, or because the job is notwithin the area that the user is hoping to move into. Consequently, asystem has been developed that displays job postings to users and/ormembers of a social or business network based on a browsing history (ofposted jobs) of the user, and in an embodiment, on jobs viewed by one ormore other users who have also viewed a job that was viewed by the user.In this way, a user or member may receive additional pertinent jobpostings based on the user's job browsing history. Relatedly, jobposting entities may sponsor job postings on a social or businessnetwork or on a platform with access to the user's browsing history withthe increased expectation that the expense of sponsoring a job postingmay be relatively more likely to result in the job posting beingpresented to a user who has an interest in the job posting.

FIG. 1 is a block diagram of a system 100 including user devices 102 anda social network and/or business network server 104. User devices 102can be a personal computer, netbook, electronic notebook, smartphone, orany electronic device known in the art that is configured to display webpages. The user devices 102 can include a network interface 106 that iscommunicatively coupled to a network 108, such as the Internet.

The social network server 104 can be communicatively coupled to thenetwork 108. The server 104 can be an individual server or a cluster ofservers, and can be configured to perform activities related to servingthe social network, such as storing social network information,processing social network information according to scripts and softwareapplications, transmitting information to present social networkinformation to users of the social network, and receive information fromusers of the social network. The server 104 can include one or moreelectronic data storage devices 110, such as a hard drive, and caninclude a processor 112.

The social network server 104 can store information in the electronicdata storage device 110 related to users and/or members of the socialnetwork, such as in the form of user characteristics corresponding toindividual users of the social network. For instance, for an individualuser, the user's characteristics can include one or more profile datapoints, including, for instance, name, age, gender, profession, priorwork history or experience, educational achievement, location,citizenship status, leisure activities, likes and dislikes, and soforth. The user's characteristics can further include behavior oractivities within and without the social network, as well as the user'ssocial graph. For an organization, such as a company, the informationcan include name, offered products for sale, available job postings,organizational interests, forthcoming activities, and the like. For aparticular available job posting, the job posting can include a jobprofile that includes one or more job characteristics, such as, forinstance, area of expertise, prior experience, pay grade, residency orimmigration status, and the like.

The ability to accurately identify in real-time or essentially real-timea set of job postings in which the user may be interested based on theuser's browsing history can be achieved with a general recommendationengine. Accordingly, at least in some examples, the recommendationengine provides a recommendation service that can be customized for usewith multiple applications or services. A recommendation entity can be acollection of information organized around a particular concept that issupported by the system 100 in general, such as the user browsinghistory, and the recommendation engine in particular.

The general recommendation engine may execute in real-time or as abackground operation, such as offline or as part of a batch process. Insome examples that incorporate relatively large amounts of data to beprocessed, the general recommendation engine may execute via a parallelor distributed computing platform.

FIG. 2 is a block diagram illustrating various components of a socialnetworking server 104 with a recommendation engine 200 for identifyingsimilarities between different recommendation entity types, such as jobpostings previously viewed by a user (as represented by a job browsinghistory), job postings not yet viewed by the user, and job postingsviewed by one or more other users who have also viewed the job postingsviewed by the user. In an example, the social networking server 104 isbased on a three-tiered architecture, consisting of a front-end layer,application logic layer, and data layer. As is understood by skilledartisans in the relevant computer and Internet-related arts, each moduleor engine shown in FIG. 2 can represent a set of executable softwareinstructions and the corresponding hardware (e.g., memory and processor)for executing the instructions. To avoid obscuring the subject matterwith unnecessary detail, various functional modules and engines that arenot germane to conveying an understanding of the inventive subjectmatter have been omitted from FIG. 2. However, a skilled artisan willreadily recognize that various additional functional modules and enginesmay be used with a social networking server 104 such as that illustratedin FIG. 2, to facilitate additional functionality that is notspecifically described herein. Furthermore, the various functionalmodules and engines depicted in FIG. 2 may reside on a single servercomputer, or may be distributed across several server computers invarious arrangements.

The front end of the social network server 104 consists of a userinterface module (e.g., a web server) 202, which receives requests fromvarious client computing devices, and communicates appropriate responsesto the requesting client devices. For example, the user interfacemodule(s) 202 may receive requests in the form of Hypertext TransportProtocol (HTTP) requests, or other web-based, application programminginterface (API) requests. The application logic layer includes variousapplication server modules 204, which, in conjunction with the userinterface module(s) 200, generates various user interfaces (e.g., webpages) with data retrieved from various data sources in the data layer.With some embodiments, individual application server modules 204 areused to implement the functionality associated with various services andfeatures of the system 100. For instance, the ability to identify aparticular job posting by a user may be a service implemented in anindependent application server module 204. Similarly, other applicationsor services that utilize the recommendation engine 200 may be embodiedin their own application server modules 204.

The data layer can include several databases, such as a database 208 forstoring recommendation data 210, such as the browsing history of users,data pairs of jobs viewed by users, user characteristics (and/or userpreferences), and job profiles, and can further include additionalsocial network information, such as interest groups, companies,advertisements, events, news, discussions, tweets, questions andanswers, and so forth. In some examples, the recommendation entity datais processed in the background (e.g., offline) to generate pre-processedentity data that can be used by the recommendation engine, in real-time,and to make recommendations generally. In an example, the recommendationengine 200 may retrieve a job browsing history profile of a user,compare a job in a user's job browsing history profile to an element ina job data pair, and recommend the other job posting represented by theother element in the job data pair (which represents another job postingviewed by one or more other users who also have viewed the jobrepresented by the first element in the job data pair).

In various examples, when a person initially registers to become a user(and/or member) of the system 100, the person can be prompted to providesome personal information, such as his or her name, age (such as bybirth date), gender, interests, contact information, home town, address,the names of the user's spouse and/or family users, educationalbackground (such as schools, majors, etc.), employment history, skills,professional organizations, and so on. This information can be stored,for example, in the database 208.

The server 104 can include a job poster interface 205, such as with auser interface coupled to the server 104 or via the network interface106. The user interface can include a conventional keyboard and displayconfiguration well known in the art. The job poster interface 205provides an interface for the posting of jobs, including a correspondingjob profile, on the social network.

The job poster interface 205 is coupled to a data management system 206.The data management system 206 can incorporate data managementtechnologies well known in the art or can incorporate proprietary datamanagement structures. In an example, the data management system 206incorporates SAS, or Statistical Analysis System data managementsystems, to promote business analysis, statistical analysis, datastorage and recovery, and the like for job information. The datamanagement system 206 can include the capacity for social networkadministrators to utilize the data generated by the data managementsystem 206, such as by inputting tasks into the data management system206.

The job poster interface 205 and the data management system 206 can bothbe coupled to the database 208. The job poster interface 205 cantransmit job data, such as job profiles, to the database 208 for storagewithout respect to data management activities. The data managementsystem 206 can store job data in the database 208 upon the job datahaving been acted upon for data management analysis.

The network interface 106 can provide the input of user data, such asuser browsing data or user characteristics, into the social network. Theuser data can be stored in the database 208 or can be directlytransmitted to the recommendation engine 200 for cross reference againstthe job data pairs stored in the database 208. Jobs identified by therecommendation engine 200 can be transmitted via the network interface106 to the user device 102 for presentation to the user.

A job analytics system 207 can track the occurrence of jobs that havebeen presented to or selected by a user. The job analytics system 207can track how many times a job has been presented, how many times a jobhas been selected or “clicked” on by a user, bill a job presentingentity accordingly, and adjust the remaining number of times the job hasleft to be presented or selected accordingly.

The job analytics system 207 can further monitor which jobs are postedto users to seek to prevent job postings from being duplicated to asingle user, as well as record analytical information related to thenumber of times, for instance, that a presented job has been clicked onby a user and the user characteristics of users who have clicked on jobpresentations. In various embodiments, the job analytics system 207 canpresent the same job to the same user a predetermined number of times oruntil the user clicks on the job to learn more. The job analytics system207 can further terminate job bids that, for instance, meet atermination date or are being presented to users unsatisfactorilyfrequently or unsuccessfully. Additionally, the job analytics system 207may be utilized to renew or extend job bids, such as at the direction ofthe job presenting entity or the social network administrator.

In various examples, when a user accesses the social network, therecommendation engine 200 cross references the user's job browsinghistory profile against some or all of the job data pairs in thedatabase 208. The recommendation engine 200 can generate a relevancefactor for each of the cross referenced job postings. The recommendationengine 200 can utilize the processor 112 and can manipulate therelevance for the job postings and/or recommendations.

In various examples, the relevance of a job recommendation to a user mayfactor in previous success that the job posting has had with otherusers. If a large percentage of users who are presented with a jobposting based on the job profile select the job posting for moreinformation, then the job posting may be deemed more relevant. Aso-called “click-through rate” that exceeds a threshold may result inthe relevance of the job posting being increased, while a click-throughrate less than a threshold may result in the relevance of the jobposting being reduced.

Relatedly, the characteristics of other users of the social network whodo select a job posting for more information can also be incorporatedinto determining the relevance for another particular user.Characteristics of users who have selected a particular job posting inthe past can be compared against user characteristics (and/or userpreferences) of a prospective user. To the extent that usercharacteristics of a prospective user are or are not related to the usercharacteristics of users who have selected a job posting in the past,the relevance of the job posting may similarly be increased or decreasedfor a prospective user. As such, the server 104 may storecharacteristics of users who have selected the job posting in the pastand may develop composite user characteristics. The degree to which thecharacteristics of a prospective user match the compositecharacteristics may weigh the results of the recommendation engine moreheavily for a given prospective user.

FIG. 3 is a block diagram showing some of the functional components ormodules that comprise a recommendation engine 200, in some examples, andillustrates the flow of data that occurs when performing variousoperations of a method for identifying and presenting job postings basedon a user's job browsing history profile (and commonly viewed jobpostings by other users). As illustrated, the recommendation engine 200can be coupled to an external data source 310, and can consist of twoprimary functional modules—an extraction engine 300 and a matchingengine 302. The extraction engine 300 can extract job data pairs havinga particular element (that represents a particular job posting), andthen the matching engine 302 can perform a particular type of matchingoperation, under the direction of a particular configuration file 304,that is specific to the requesting application (such as finding otherdata pairs that include the particular element). Accordingly, dependingupon the particular inputs to the recommendation engine 200 and thedesired outputs, different configuration files 304 may be used tocompare different characteristics of different recommendation entities.

FIG. 4A is a depiction of a user interface screen 400 that can bedisplayed by the social network, business network, or job postingservice on the user device 102 corresponding to a user. FIG. 4C is adepiction of the user interface screen on a mobile device. The userinterface screen 400 can occupy the entire screen of the user device102. In another example embodiment, the user interface screen 400 can bea sub-portion of a larger user interface screen displaying additionalinformation related to the social and/or business network. Upon therecommendation engine 200 having identified jobs to present to a userbased on the user's job browsing history profile, the social networkserver 104 can transmit the jobs to the user device 102, such as alongwith other social network information that is displayed on a userinterface, such as a display screen, of the user device 102.

In the illustrated example, the user interface screen 400 includes alist 405 of jobs. In various examples, the list 405 is an ordered listbased on various criteria.

In an example, jobs 410, 415 are displayed at the top of the list, i.e.,most prominently on the list 405. In the illustrated example, the jobs410, 415 include a company name 411, a job title 412, and a job location413.

In the illustrated example, jobs 420, 425 are displayed less prominentlythan the jobs 410, 415. The jobs 420, 425 also include a company name411, a job title 412, and a job location 413.

When a user clicks on a job posting displayed on the user interface 400such as job posting 415, user interface 400B is displayed on the screenof the user device 102. The user interface 400B displays the companyname 411, the job title 412, and the job location 413. The userinterface further displays a detailed job description 430, job duties435, and job qualifications 440. If the user would like to apply forthis job 412 after reviewing the job description 430, job duties 435,and job qualifications 440, the user can click on an Apply Now button450 which will initiate a job application process for the user.

In sub-display 460, the system displays on the user interface other jobsthat the user may be interested in. As noted throughout this disclosure,these other jobs are jobs that have been viewed by one or more otherusers who have also viewed the job 412 that the user has clicked on andfor which the details are being displayed to the user as a jobdescription 430, job duties 435, and job qualifications 440. These otherjobs are identified by a company name 462 and a job title 464. The usercan click on one of these other jobs, and details of the other job willbe displayed to the user such as the job description 430, job duties435, and job qualifications 440. In an embodiment, when the user clickson one of these other jobs and the one of these other jobs are displayedto the user, an additional list of others jobs 460 can be displayed tothe user (based on the other job selected by the user).

FIGS. 5A, 5B, and 5C are a block diagram illustrating features of aprocess and system to create a job browsing history profile for a userand to use that job browsing history profile in connection withrecommending job postings to the user. FIGS. 5A, 5B, and 5C include anumber of process blocks 505-580. Though arranged serially in theexample of FIGS. 5A, SB, and SC, other examples may reorder the blocks,omit one or more blocks, and/or execute two or more blocks in parallelusing multiple processors or a single processor organized as two or morevirtual machines or sub-processors. Moreover, still other examples canimplement the blocks as one or more specific interconnected hardware orintegrated circuit modules with related control and data signalscommunicated between and through the modules. Thus, any process flow isapplicable to software, firmware, hardware, and hybrid implementations.

Referring to FIG. 5, at 505, identifications and attributes of jobpostings that have been viewed by a user in a job posting service arestored in a database. Job postings are listings of job positions that anemployer is looking to fill. These postings are normally posted in anonline or web-based environment. The identifications and attributes ofthe job postings can relate to, for example, the company offering thejob, a job title, education required for the job, work experiencerequired for the job, skills required for the job, and salaryinformation. As indicated at 506, the user can be a user or member of asocial networking service and/or a business networking service.Additionally, the job posting service can be an independent web-basedjob posting service, or the job posting service can be affiliated withthe social networking service or the business networking service.

At 510, a job browsing history profile is created for the user using theidentifications and attributes of the posted jobs that the user hasviewed. The job browsing history profile provides an overview of thetypes of jobs and the specific jobs that a user has viewed. The jobbrowsing history profile is created without regard to any personalprofile of the user. At 515, the job browsing history profile iscompared to job postings in the job posting service. In an embodiment,these job postings in the job posting service have not been viewed bythe user. After this comparison, at 520, a listing of job postings basedon the comparison is generated. As noted at 521, the listing of jobpostings is generated when the attributes of the job postings in theuser's job browsing history profile are similar to attributes of the jobpostings in the job posting service. As indicated at 522, the jobpostings that have not been viewed by the user could be newly listed jobpostings in the job posting service. Alternatively, the job postingsthat have not been viewed by the user could be job postings that theuser's searches have not yet located, or job postings that the user haslocated but has not yet viewed or clicked on. At 525, the listing of jobpostings is displayed to the user. Consequently, as a result of theexecution of operations 510, 515, 520, and 525, ifa user's personalprofile indicates that the user has been a software developer for theprevious ten years, but the user's job browsing history profileindicates that the user is viewing job postings that relate to marketingpositions, the comparison between the job browsing history profile andthe job postings will detect this interest in a job type not reflectiveof the user's personal profile, and marketing type job positions will berecommended to the user at the current time and/or in the future.

At 530, the user selects a first job posting from the listing of jobpostings, and at 531, a second listing of job postings is displayed tothe user. The second listing of job postings includes job postingsviewed by one or more other users who have also viewed the first jobposting. For example, if the user views Job A in the job postingservice, one or more other users who have view Job A also have viewedJobs B, C, and D in the job posting service, and in an embodiment theuser has not viewed Jobs B. C, and D, then Jobs B, C, and D can berecommended to the user. In an embodiment, other factors can beconsidered before Jobs B, C, and D are recommended to the user, such aswhen the other users viewed Jobs B. C, and D and how many other usershave viewed Jobs B, C, and D.

In an embodiment, the second listing of job postings is created asfollows. At 540, data relating to the one or more other users' viewingof job postings in the job posting service are stored in a database, andat 541, a plurality of data pairs is created. The data pairs consist ofa first element including the first job posting and a second elementincluding a second job posting. At 542, the display of the secondlisting of job postings to the user is based on data pairs that have asthe first element the first job posting selected by the user, andanother job that has not been viewed by the user (but which has beenviewed by other users who also viewed the first job posting). Forexample, if another user views Jobs A, B, and C, the following job pairswill be created—(A, B), (A, C), (B, A), (B, C), (C, A), and (C, B). Inan embodiment, “duplicate” pairs are removed, such as (B, A) in light of(A, B). If the user views Job B, then the system checks both the firstand second elements of the set of data pairs, so that the pair (A,B)will indicate that Job A should also be recommended to the user (if theuser has not already viewed Job A). As noted, and as indicated at 543,both the first job posting and the second job posting have been viewedby at least one other user.

At 544, a date is recorded when job postings have been viewed by one ormore other users. At 545, jobs in the second listing of job postingsthat have been viewed by the one or more other users after a thresholddate are displayed to the user. This feature assures that only jobpostings that have recently been viewed by others are displayed to theuser, thereby imparting an indication of a “fresh” interest in the jobpostings that are displayed to the user.

At 546, a new job posting is added to the second listing of job postingsbased on a comparison of attributes of a new job posting to attributesof the job postings in the second listing of job postings. This featurepermits a new job posting to be recommended to the user immediately uponits addition by the job posting service. Similarly, and as indicated at547, a data pair including the first job posting and the new job postingis generated when the attributes of the new job posting are similar toattributes of the first job posting. For example, if a new job C isadded by the job posting service, and the new job C is similar to acurrent job posting B, then if job posting B is recommended to the user,then job posting C may be recommended to the user also. In anembodiment, if there is a job pair (A, B), then a new job pair (A, C)would be formed based on the similarities of job postings B and C.

At 550, a plurality of job postings from a business organization areaggregated into a single listing among the second listing of jobpostings displayed to the user. This feature reduces screen clutterand/or permits the display of job listings from more businessorganizations. This feature can be particularly useful when the joblistings from the business organization are of the same or similar jobtitle or job function. A user can click on this aggregated listing toview the job postings within the listing. In another embodiment, theaggregation of the job listings for a business organization areaggregated or categorized into different titles, functions, sub-titles,and sub-functions. For example, the job posting for a businessorganization may be aggregated into marketing, finance, human resource,and software development categories, and the software developmentcategory can further be divided into communications, web development,and mobile areas.

At 555, a user can modify the job browsing history profile, and at 556,the modified job browsing history profile is used in connection withdisplaying to the user the second or recommended listing of jobpostings. This feature permits a user to actively affect the jobpostings that are recommended to the user. For example, if the user hasbeen searching for a particular type of job over several weeks, and hasnot found anything to his or her liking, then the user can decide that adifferent type of job should be considered. The attributes of thatdifferent type of job can be input into the job browsing historyprofile, and in a very short time, job postings relating to thatdifferent type of job will be recommended to the user based on themodified job browsing profile history. Additionally, a user can deletehis or her browsing history or a portion of the browsing history. Forexample, if a user was browsing job profiles just out of curiosity andnot in relation to a serious job search, the user can remove thesebrowsed jobs from the browsing history.

At 560, the system implements a term frequency-inverse documentfrequency (tf-idf) protocol. This causes the system to operate in amanner such that a frequently viewed job posting by other users does notappear in the second listing of job postings displayed to the user. Onereason for implementing this feature may be that the competition for ahighly-viewed job posting may be intense, and other less sought afterjobs may be more attainable by the user. In an embodiment, the user ispermitted to turn this feature on and off.

At 565, the second listing of job postings is regenerated on a periodicbasis. For example, a daily process may be executed in the system thatdetermines additional jobs that have been viewed by one or more otherusers who have also viewed the job posting viewed by the user. Theseadditional job postings can then be recommended to the user. Each of thenew job postings would be included in a new data pair with the otherelement of the data pair being the job posting viewed by the user.

At 570, the system uses a click through rate or a view rate whendetermining the job postings to include in the second listing of jobpostings. For example, only job postings that one or more other usershave actually clicked on to examine in more detail may be recommended tothe user (as compared to job postings that have only been presented toand viewed by the other users and not clicked on). In anotherembodiment, both viewed and clicked on jobs can be recommended to theuser, but the clicked on job postings can be ranked or weighted in adifferent fashion than job postings that have just been viewed.Similarly, as indicated at 575, the system can generate a preferencevalue for the user for one or more job postings in the second listing ofjob postings. This feature permits a user to identify particularpreferences for the jobs recommended to him or her, such as ageographical preference. At 580, the system creates the job browsinghistory profile after a number of job postings viewed by the userexceeds a threshold. This feature prevents the system from generating ajob browsing history profile when there is too little data to generate areliable profile. For example, a user may initially view job postingsrelated to a particular type of job, but that may have been out of apassing interest rather than a true desire to find a particular type ofjob. In an embodiment, the system may be configured not to create a jobbrowsing history profile based on a passing interest.

FIG. 6 is a block diagram illustrating components of a machine 600,according to some example examples, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 6 shows a diagrammatic representation of the machine600 in the example form of a computer system and within whichinstructions 624 (e.g., software) for causing the machine 600 to performany one or more of the methodologies discussed herein may be executed.In alternative examples, the machine 600 operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine 600 may operate in the capacity of a servermachine or a client machine in a server-client network environment, oras a peer machine in a peer-to-peer (or distributed) networkenvironment. The machine 600 may be a server computer, a clientcomputer, a personal computer (PC), a tablet computer, a laptopcomputer, a netbook, a set-top box (STB), a personal digital assistant(PDA), a cellular telephone, a smartphone, a web appliance, a networkrouter, a network switch, a network bridge, or any machine capable ofexecuting the instructions 624, sequentially or otherwise, that specifyactions to be taken by that machine. Further, while only a singlemachine is illustrated, the term “machine” shall also be taken toinclude a collection of machines that individually or jointly executethe instructions 624 to perform any one or more of the methodologiesdiscussed herein.

The machine 600 includes a processor 602 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 604, and a static memory 606, which areconfigured to communicate with each other via a bus 608. The machine 600may further include a graphics display 610 (e.g., a plasma display panel(PDP), a light emitting diode (LED) display, a liquid crystal display(LCD), a projector, or a cathode ray tube (CRT)). The machine 600 mayalso include an alphanumeric input device 612 (e.g., a keyboard), acursor control device 614 (e.g., a mouse, a touchpad, a trackball, ajoystick, a motion sensor, or other pointing instrument), a storage unit616, a signal generation device 618 (e.g., a speaker), and a networkinterface device 620.

The storage unit 616 includes a machine-readable medium 622 on which isstored the instructions 624 (e.g., software) embodying any one or moreof the methodologies or functions described herein. The instructions 624may also reside, completely or at least partially, within the mainmemory 604, within the processor 602 (e.g., within the processor's cachememory), or both, during execution thereof by the machine 600.Accordingly, the main memory 604 and the processor 602 may be consideredas machine-readable media. The instructions 624 may be transmitted orreceived over a network 626 via the network interface device 620.

As used herein, the term “memory” refers to a machine-readable mediumable to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 622 is shown in an example to be a singlemedium, the term “machine-readable medium” should be taken to include asingle medium or multiple media (e.g., a centralized or distributeddatabase, or associated caches and servers) able to store instructions.The term “machine-readable medium” shall also be taken to include anymedium, or combination of multiple media, that is capable of storinginstructions (e.g., software) for execution by a machine (e.g., machine600), such that the instructions, when executed by one or moreprocessors of the machine (e.g., processor 602), cause the machine toperform any one or more of the methodologies described herein.Accordingly, a “machine-readable medium” refers to a single storageapparatus or device, as well as “cloud-based” storage systems or storagenetworks that include multiple storage apparatus or devices. The term“machine-readable medium” shall accordingly be taken to include, but notbe limited to, one or more data repositories in the form of asolid-state memory, an optical medium, a magnetic medium, or anysuitable combination thereof.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A “hardware module” is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule may include software encompassed within a general-purposeprocessor or other programmable processor. It will be appreciated thatthe decision to implement a hardware module mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software mayaccordingly configure a processor, for example, to constitute aparticular hardware module at one instance of time and to constitute adifferent hardware module at a different instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules. Moreover, theone or more processors may also operate to support performance of therelevant operations in a “cloud computing” environment or as a “softwareas a service” (SaaS). For example, at least some of the operations maybe performed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

The performance of certain of the operations may be distributed amongthe one or more processors, not only residing within a single machine,but deployed across a number of machines. In some example embodiments,the one or more processors or processor-implemented modules may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In other exampleembodiments, the one or more processors or processor-implemented modulesmay be distributed across a number of geographic locations.

Some portions of this specification are presented in terms of algorithmsor symbolic representations of operations on data stored as bits orbinary digital signals within a machine memory (e.g., a computermemory). These algorithms or symbolic representations are examples oftechniques used by those of ordinary skill in the data processing artsto convey the substance of their work to others skilled in the art. Asused herein, an “algorithm” is a self-consistent sequence of operationsor similar processing leading to a desired result. In this context,algorithms and operations involve physical manipulation of physicalquantities. Typically, but not necessarily, such quantities may take theform of electrical, magnetic, or optical signals capable of beingstored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

1. A memory device, the memory device communicatively coupled to aprocessor and comprising instructions which, when performed on theprocessor, cause the processor to: receive and store in a databaseidentifications and attributes of job postings viewed by a user in a jobposting service; create a job browsing history profile for the userusing the identifications and attributes; compare the job browsinghistory profile to job postings in the job posting service; generate alisting of job postings based on the comparison; and display the listingof job postings to the user.
 2. The memory device of claim 1, comprisinginstructions to cause the processor to generate the listing of jobpostings when the attributes of the job postings in the job browsinghistory profile are similar to attributes of the job postings that havenot been viewed by the user.
 3. The memory device of claim 1, whereinthe job postings that have not been viewed by the user are newly listedjob postings in the job posting service.
 4. The memory device of claim1, comprising instructions to cause the processor to: receive from theuser a selection of a first job posting from the listing of jobpostings; and display a second listing of job postings to the user, thesecond listing of job postings comprising job postings viewed by otherusers who have also viewed the first job posting.
 5. The memory deviceof claim 4, wherein the second listing of job postings is created usinginstructions that cause the processor to: receive and store in thedatabase data relating to the other users viewing job postings in thejob posting service; and create a plurality of data pairs comprising afirst element including the first job posting and a second elementincluding a second job posting.
 6. The memory device of claim 5, whereinboth the first job posting and the second job posting have been viewedby at least one other user.
 7. The memory device of claim 5, wherein thedisplay of the second listing of job postings to the user is based ondata pairs that have as the first element the first job posting selectedby the user.
 8. The memory device of claim 4, wherein the user and theother users are members of a social networking service or businessnetworking service.
 9. The memory device of claim 4, comprisinginstructions to cause the processor to record a date when job postingshave been viewed by the other users; and to display to the user jobs inthe second listing of job postings that have been viewed by the otherusers after a threshold date.
 10. The memory device of claim 4,comprising instructions to cause the processor to add a new job postingto the second listing of job postings based on a comparison ofattributes of the new job posting to attributes of the job postings inthe second listing of job postings.
 11. The memory device of claim 10,comprising instructions to generate a data pair comprising the first jobposting and the new job when the attributes of the new job posting aresimilar to attributes of the first job posting.
 12. The memory device ofclaim 1, comprising instructions to cause the processor to aggregate aplurality of job postings from a business organization into a singlelisting among the second listing of job postings displayed to the user.13. The memory device of claim 1, comprising instructions to cause theprocessor to permit the user to modify the job browsing history profile;and to use the modified job browsing history profile in connection withdisplaying to the user the listing of job postings.
 14. The memorydevice of claim 4, comprising instructions to cause the processor toimplement a term frequency-inverse document frequency (tf-idf) protocolsuch that a frequently viewed job posting by the other users does notappear in the second listing of job postings displayed to the user. 15.The memory device of claim 4, wherein the second listing of job postingsis regenerated on a periodic basis.
 16. The memory device of claim 4,comprising instructions to cause the processor to consider one or moreof a click through rate or a view rate when determining the job postingsto include in the second listing of job postings.
 17. The memory deviceof claim 1, comprising instructions to cause the processor to generate apreference value for the user for one or more job postings in the secondlisting of job postings.
 18. The memory device of claim 1, comprisinginstructions that cause the processor to create the job browsing historyprofile after a number of job postings viewed by the user exceeds athreshold.
 19. A process comprising: receiving and storing in a databaseidentifications and attributes of job postings viewed by a user in a jobposting service; creating a job browsing history profile for the userusing the identifications and attributes; comparing the job browsinghistory profile to job postings in the job posting service; generating alisting of job postings based on the comparison; and displaying thelisting of job postings to the user.
 20. A system comprising: a computerprocessor configured for: receiving and storing in a databaseidentifications and attributes of job postings viewed by a user in a jobposting service; creating a job browsing history profile for the userusing the identifications and attributes; comparing the job browsinghistory profile to job postings in the job posting service; generating alisting of job postings based on the comparison; and displaying thelisting of job postings to the user.
 21. The system of claim 20, whereinthe job postings in the job posting service have not been viewed by theuser.